class Solution {
public:
    int maxTotalReward(vector<int>& rewardValues) {
        int size = rewardValues.size();
        sort(rewardValues.begin(),rewardValues.end());
        vector<int> dp(rewardValues[rewardValues.size() - 1]*2 + 1);
        dp[0] = 1;
        for(auto e : rewardValues){
            for(int i = e;e*2 > i;i++){
                if(dp[i - e]) 
                    dp[i] = 1;
            }
        }
        int ret = 0;
        for(int i = 0;i < rewardValues[rewardValues.size() - 1]*2 + 1;i++){
            if(dp[i])
                ret = i;
        }
        return ret;
    }
};